home *** CD-ROM | disk | FTP | other *** search
/ The Macintosh Demo Applications CD / Apple-MacintoshDemoApplicationsCD-1.0-1992.iso / More Information / QuicKeys / For Programmers Only.sea / C Examples / SampleUI.c < prev    next >
C/C++ Source or Header  |  1991-06-22  |  3KB  |  93 lines

  1. /*
  2.     $Workfile:   SampleUI.c  $
  3.     $Revision:   1.0  $
  4.                             
  5.     QuicKeys sample extension user interface routine
  6.     
  7.     Extension beeps after the user supplied wait time.
  8.  
  9.     © 1990 CE Software, Inc.  All rights reserved.
  10.             
  11.     For QuicKeys 2 Extension Sample source code you have a royalty-free right
  12.     to include object code derived from this Sample source code in programs
  13.     that you develop.  You also have the right to use, distribute, and license
  14.     such programs to third parties without payment of any further license fees
  15.     to CE Software, Inc., so long as a copyright notice sufficient to protect
  16.     your copyright for your software in the United States or any other country;
  17.     is included in the graphic display of your software and on the labels
  18.     affixed to the media on which your software is distributed.
  19.  
  20.     WHEN    WHO        WHAT
  21. •••••
  22.     9/5        mkg        created version for both MPW and Think C
  23.     6/17    mkg        add balloon help example
  24. •••••
  25. */
  26.  
  27. #ifdef THINK_C
  28. #include "packagemgr.h"
  29. #else
  30. #include "types.h"
  31. #include "dialogs.h"
  32. #include "packages.h"
  33. #include "resources.h"
  34. #include "memory.h"
  35. #endif
  36.  
  37. #include "extensions.h"
  38.  
  39. #include "SampleData.h"
  40.  
  41. /* items in our DITL list */
  42. #define ditlWaitTime    1
  43.  
  44. long pascal
  45. main(short wSelector, DialogPtr pDialog, short wHitItem, short wFirstItem,
  46.                                         SampleData* pMyData, long lRefCon) {
  47.     Str255    strWaitTime;
  48.     short    wType;
  49.     Handle    hItem;
  50.     Rect    rDitl;
  51.     Handle    hHelp;
  52.  
  53.     switch(wSelector) {
  54.         case newUI:
  55.             /* the user has just created a new key.  initialize it */
  56.             pMyData->lWaitTime = 0;
  57.             pMyData->hdr.wLength = sizeof(SampleData);
  58.             break;
  59.  
  60.         case initUI:
  61.             /* QuicKeys 2™ is about to display our dialog.  set up our dialog items */
  62.             NumToString(pMyData->lWaitTime, strWaitTime);
  63.             GetDItem(pDialog, ditlWaitTime + wFirstItem, &wType, &hItem, &rDitl);
  64.             SetIText(hItem, strWaitTime);
  65.             
  66.             /* fudge the hdlg resource to set the number of dialog items to skip */
  67.             hHelp = GetResource('hdlg', -14348);
  68.             if (hHelp != nil)
  69.                 BlockMove((Ptr)&wFirstItem, *hHelp + 2, sizeof(short));
  70.             break;
  71.  
  72.         case hitUI:
  73.             /* the user clicked or typed into one of our items */
  74.             /* in this example, there is nothing to do */
  75.             break;
  76.  
  77.         case doneUI:
  78.             /*
  79.              * The user has clicked ok or cancel. 
  80.              * Collect items from dialog and place in key data.
  81.              * 
  82.              * Important note:  Since QuicKeys gives us a copy of the key data to
  83.              * work on, we don't care whether user hit ok or cancel.  QuicKeys will
  84.              * discard the copy if the user hit cancel or update the actual key data
  85.              * if the user hit ok.
  86.              */
  87.             GetDItem(pDialog, ditlWaitTime + wFirstItem, &wType, &hItem, &rDitl);
  88.             GetIText(hItem, strWaitTime);
  89.             StringToNum(strWaitTime, &(pMyData->lWaitTime));
  90.             break;
  91.         }
  92.     return 0;
  93. }